The IEEE standard, "P1394 Standard For A High Performance Serial Bus," Draft 8.0v2, Jul. 7, 1995, is an international standard for implementing an inexpensive high-speed serial bus architecture which supports both asynchronous and isochronous format data transfers. Isochronous data transfers are real-time transfers which take place such that the time intervals between significant instances have the same duration at both the transmitting and receiving applications. Each packet of data transferred isochronously is transferred in its own time period. The IEEE 1394 standard bus architecture provides multiple channels for isochronous data transfer between applications. A six bit channel number is broadcast with the data to ensure reception by the appropriate application. This allows multiple applications to simultaneously transmit isochronous data across the bus structure. Asynchronous transfers are traditional data transfer operations which take place as soon as possible and transfer an amount of data from a source to a destination.
The IEEE 1394 standard provides a high-speed serial bus for interconnecting digital devices thereby providing a universal I/O connection. The IEEE 1394 standard defines a digital interface for the applications thereby eliminating the need for an application to convert digital data to analog data before it is transmitted across the bus. Correspondingly, a receiving application will receive digital data from the bus, not analog data, and will therefore not be required to convert analog data to digital data. The cable required by the IEEE 1394 standard is very thin in size compared to other bulkier cables used to connect such devices. Devices can be added and removed from an IEEE 1394 bus while the bus is active. If a device is so added or removed the bus will then automatically reconfigure itself for transmitting data between the then existing nodes. A node is considered a logical entity with a unique address on the bus structure. Each node provides an identification ROM, a standardized set of control registers and its own address space.
The IEEE 1394 standard defines a protocol as illustrated in FIG. 1. This protocol includes a serial bus management block 10 coupled to a transaction layer 12, a link layer 14 and a physical layer 16. The physical layer 16 provides the electrical and mechanical connection between a device or application and the IEEE 1394 cable. The physical layer 16 also provides arbitration to ensure that all devices coupled to the IEEE 1394 bus have access to the bus as well as actual data transmission and reception. The link layer 14 provides data packet delivery service for both asynchronous and isochronous data packet delivery service for both asynchronous and isochronous data packet transport. This supports both asynchronous data transport, using an acknowledgement protocol, and isochronous data transport, providing real-time guaranteed bandwidth protocol for just-in-time data delivery. The transaction layer 12 supports the commands necessary to complete asynchronous data transfers, including read, write and lock. The serial bus management block 10 contains an isochronous resource manager for managing isochronous data transfers. The serial bus management block 10 also provides overall configuration control of the serial bus in the form of optimizing arbitration timing, guarantee of adequate electrical power for all devices on the bus, assignment of the cycle master, assignment of isochronous channel and bandwidth resources and basic notification of errors.
Within the IEEE 1394 serial bus protocol there is a self-ID process which is used by the bus manager node within a bus structure to build a topology map of the nodes within the bus structure. This self-ID process determines the physical topology of the nodes on the IEEE 1394 serial bus network due to their port connections. From each port it is determined if there is a connection and if the connection is to a child or parent node. During this self-ID process, all of the physical connections are assigned a direction pointing towards the root node. The direction is set by labeling each connected port as either a parent port or a child port. A parent port is a port connected to a node closer to the root node than the reporting node. A child port is a port connected to a node further from the root node than the reporting node. From these relationships the bus manager node can determine the physical topology of the devices connected to the IEEE 1394 serial bus network. In this manner, a node is able to determine the devices which are connected to each of its ports.
IEEE 1394 asynchronous communications are addressed to the device to which they are being transmitted. When transmitting an asynchronous packet over the IEEE 1394 serial bus network, the packet is transmitted over each of the connected ports from the originating device. The packet is then transmitted to each intermediate device within the network, in turn, until it is received by the destination device to which it was addressed. When received 1 by the intermediate devices, the packet is received on one of the ports of the intermediate device. The intermediate device then rebroadcasts the packet on the connected non-receiving ports.
The IEEE 1394 serial bus can be used to connect many different devices together within a network, as described above. These devices can be coupled together within the same office or house or can be spread out over a bigger facility such as an office building or school. In some applications of the IEEE 1394 serial bus a device is coupled to the bus structure and cannot control the types of devices coupled to the IEEE 1394 serial bus and therefore cannot control the security of the IEEE 1394 serial bus network. In such a situation the device cannot prevent other devices coupled to the IEEE 1394 bus structure from monitoring or capturing communications which are transmitted from or received by the device. There is presently no manner to determine if a device is coupled to the IEEE 1394 serial bus in order to snoop on communications between other nodes or otherwise jeopardize the security of the IEEE 1394 serial bus network. These concerns also include fear of malicious nodes "spoofing" or acting in place of, other nodes connected to the IEEE 1394 serial bus network. There is presently nothing to stop intermediate nodes from copying transmissions as they pass them along on the IEEE 1394 serial bus to the destination node. There is also nothing to stop devices from sending false communications to a device in order to solicit information which the device would otherwise not send. Accordingly, security on an IEEE 1394 serial bus structure in such environments is of great concern.
What is needed is a method and apparatus for detecting the direction from which bus packets were received. What is further needed is a method and apparatus for controlling the direction of transmission from a node.